USE [Bases2]
GO
/****** Object:  StoredProcedure [dbo].[CrearChequera]    Script Date: 11/28/2011 11:44:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[CrearChequera]    
    @id_cuenta int,
    @num_cheques int
AS 
BEGIN
	SET NOCOUNT ON
	BEGIN TRANSACTION 
	DECLARE @Contador int, @Id_Chequera int
	SET @Contador=0
	SET @Id_Chequera=0
    
    SELECT @Contador=COUNT(1)
    FROM CUENTA WHERE id_cuenta=@id_cuenta
    
    IF @Contador<=0
    BEGIN
		SELECT 'El numero de cuenta que ingreso no existe.'
	END
	ELSE
	BEGIN
		SELECT @Contador=COUNT(1)
		FROM BANCO
		INNER JOIN CUENTA ON BANCO.id_banco= CUENTA.id_cuenta 
		INNER JOIN TIPO_CUENTA ON CUENTA.id_tipo_cuenta=TIPO_CUENTA.id_tipo_cuenta
		INNER JOIN CLIENTE_CUENTA ON CLIENTE_CUENTA.id_cuenta=CUENTA.id_cuenta
		INNER JOIN CLIENTE ON CLIENTE.id_cliente=CLIENTE_CUENTA.id_cliente
		INNER JOIN TIPO_CLIENTE ON TIPO_CLIENTE.id_tipo_cliente=CLIENTE.id_tipo_cliente
		INNER JOIN ESTADO_CUENTA ON ESTADO_CUENTA.id_cuenta=CUENTA.id_cuenta
		WHERE ESTADO_CUENTA.id_tipo_estado=0
		AND ESTADO_CUENTA.estado=1
		AND CUENTA.id_cuenta=@id_cuenta;
		IF @Contador>0
		BEGIN
			SELECT 'La cuenta que ingreso se encuentra bloqueada.'
		END
		ELSE
		BEGIN
			SELECT @Contador=COUNT(1)
			FROM BANCO
			INNER JOIN CUENTA ON BANCO.id_banco= CUENTA.id_cuenta 
			INNER JOIN TIPO_CUENTA ON CUENTA.id_tipo_cuenta=TIPO_CUENTA.id_tipo_cuenta
			INNER JOIN CLIENTE_CUENTA ON CLIENTE_CUENTA.id_cuenta=CUENTA.id_cuenta
			INNER JOIN CLIENTE ON CLIENTE.id_cliente=CLIENTE_CUENTA.id_cliente
			INNER JOIN TIPO_CLIENTE ON TIPO_CLIENTE.id_tipo_cliente=CLIENTE.id_tipo_cliente
			INNER JOIN ESTADO_CUENTA ON ESTADO_CUENTA.id_cuenta=CUENTA.id_cuenta
			WHERE ESTADO_CUENTA.id_tipo_estado=1
			AND ESTADO_CUENTA.estado=1
			AND CUENTA.id_cuenta=@id_cuenta;
			IF @Contador>0
			BEGIN
				SELECT 'La cuenta que ingreso se encuentra cancelada.'
			END
			ELSE
			BEGIN
				SELECT TOP(1) @Id_Chequera=CHEQUERA.id_chequera
				FROM CHEQUERA
				ORDER BY CHEQUERA.id_chequera DESC
		
				IF(@Id_Chequera IS NULL)
				BEGIN
					SET @Id_Chequera=-1
				END
				
				SET @Id_Chequera=@Id_Chequera+1
							
				INSERT INTO CHEQUERA VALUES(@Id_Chequera,@id_cuenta);
				
				
				SELECT TOP(1) @Contador=id_cheque
				FROM CHEQUE
				ORDER BY id_cheque DESC
		
				IF(@Contador IS NULL)
				BEGIN
					SET @Contador=-1
				END
				
				SET @Contador=@Contador+1								
				
				DECLARE @Limite INT
				SET @Limite=@Contador+@num_cheques
				WHILE @Contador<@Limite
				BEGIN
					INSERT INTO CHEQUE VALUES(@Contador,@Id_Chequera,0,NULL);
					SET @Contador=@Contador+1
				END
				
				SELECT 'Chequera y cheques creados con exito.<br>Codigo de chequera:'+CAST(@Id_Chequera as varchar)+'<br>Codigos de cheques:['+CAST((@Contador-@num_cheques) as varchar)+','+CAST((@Contador-1) as varchar)+']'
			END
		END			
	END	
	COMMIT
	SET NOCOUNT OFF
END
